class Solution {
    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int m = nums1.length;
        int n = nums2.length;
        int len = m + n;
        int left = -1, right = -1;
        int start1 = 0, start2 = 0;
        // 奇偶数都遍历 (len / 2) + 1 次
        for(int i = 0; i <= len / 2; i++){
            // right为最后一次遍历的结果
            // 奇数取最后一次
            // 偶数取最后两次
            left = right;
            // 用start1和start2分别指向两个数组的当前位置。
            // 如果start1还没有到最后并且此时nums1位置的数字小于nums2位置的数组，那么就可以后移
            if(start1 < m && (start2 >= n || nums1[start1] < nums2[start2])){
                right = nums1[start1++];
            }else{
                right = nums2[start2++];
            }
        }
        if((len & 1) == 0){
            return (left + right) / 2.0;
        }else{
            return right;
        }
    }
}